# locust777

////将三个整数从大到小输出
//void Swap(int *px,int *py)
//{
//int tmp = *px;
//*px = *py;
//*py = tmp;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d",&a,&b,&c);//输入
//	if(a < b)//调整
//	{
//	Swap(&a,&b);
//	}
//	if(a < c)
//	{
//	Swap(&a,&b);
//	}
//	if(b < c)
//	{
//	Swap(&b,&c);
//	}
//	printf("%d %d %d\n",a,b,c);
//	return 0;
//}



//
////打印1-100之间3的倍数1
//#include<stdio.h>
//int main()
//{
//int i = 0;
//for(i = 1;i <= 100;i+=1)
//{
//	if( i % 3 == 0)
//	{
//	printf("%d",i);
//	}
//}
//	return 0;
//}



////法二
//#include<stdio.h>
//int main()
//{
//int i = 0;
//for(i = 3;i <= 100;i+=3)
//{
//	printf("%d",i);
//}
//	return 0;
//}





////给定两个数求最大公约1
//#include<stdio.h>
//int main()
//{
//	int a =0;
//	int b =0;
//	scanf("%d %d ",a,b);
//	int min = (a < b)? a:b;
//	while(1)
//	{
//	if(a%min == 0 && b% min == 0)
//	{
//	break;
//	}
//	min--;
//	}
//	printf("%d\n",min);
//	scanf("%d",min);
//
//return 0;
//}



//公约数2，辗转相除法
#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int  c = 0;
	scanf("%d %d",a,b);//出现病毒，重新理解
	while(c=a%b)
	{
	//int c = a % b;
	a = b;
	b = c;
	}
	printf("%d\n",b);
	scanf("%d %d",a,b);

return 0;
}